class A1 {
  a() {
    return t;
  }

  A1(this.t);

  int t;

  operator >(other) {
    return this.t > other.t;
  }

  operator <(other) {
    return this.t < other.t;
  }

  operator [](int t) {
    return this.t;
  }

  @override
  bool operator ==(Object other) =>
      identical(this, other) ||
      other is A1 && runtimeType == other.runtimeType && t == other.t;

  @override
  int get hashCode => t.hashCode;
}

void main() {
  var a = A1(1);
  var b = A1(2);
  print(b[1]);
  print(a < b);
  print(a.a());
}
